home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / dtm / test.gl < prev    next >
Text File  |  1991-06-18  |  1KB  |  61 lines

  1. Basetype E;
  2.  
  3. Atom
  4.    not :- E => E,
  5.    nand2 :- E & E => E,
  6.    adc :- E & E & E => E & E,
  7.    div2 :- E => E;
  8.  
  9.  
  10. Def
  11.    sel :- E & E & E => E;
  12.    sel [s, a, b] = nand2 [nand2 [not s, a], nand2 [s, b]];
  13.  
  14.  
  15. Mac
  16.    divchain :- Int -> E => E -> E => E;
  17.    divchain 0 A in = in;
  18.    divchain n A in = divchain (n-1) A (A in);
  19.  
  20. Def
  21.    div1024 :- E => E;
  22.    div1024 in = divchain 10 div2 in;
  23.  
  24. Mac
  25.    adder :- Int -: n -> E^n & E^n & E => E & E^n;
  26.    adder 0 [[],[],c] = [c,[]];
  27.    adder n [a:as, b:bs, c] = [cout, s:ss]
  28.       where
  29.          [v,s] = adc [a,b,c];
  30.          [cout,ss] = adder (n-1) [as, bs, v];
  31.       endwhere;
  32.  
  33. Def
  34.    adder4 :- E^4 & E^4 & E => E & E^4;
  35.    adder4 [as,bs,c] = adder 4 [as,bs,c];
  36.  
  37. Atom
  38.    blb :- E & E => E & E;
  39.  
  40. Mac
  41.    blbrow :- Int -: n -> E^n & E => E & E^n;
  42.    blbrow 0 [[], e] = [e, []];
  43.    blbrow n [ne:ns, e] = [w, s:ss]
  44.       where
  45.          [v,s] = blb [ne,e];
  46.          [w,ss] = blbrow (n-1) [ns, v];
  47.       endwhere;
  48.  
  49. Mac
  50.    blbarray :- Int -: m -> Int -: n -> E^n & E^m => E^m & E^n;
  51.    blbarray 0 n [ns,[]] = [[],ns];
  52.    blbarray m n [ns, e:es] = [w:ws,ss]
  53.       where
  54.      [w, ins] = blbrow n [ns, e];
  55.      [ws,ss] = blbarray (m-1) n [ins,es];
  56.       endwhere;
  57.  
  58. Def
  59.    blbtest :- E^4 & E^4 => E^4 & E^4;
  60.    blbtest [ns,es] = blbarray 4 4 [ns,es];
  61.